CNS图表复现09—上皮细胞可以区分为恶性与否
分享是一种态度
回顾
我们的CNS图表复现之旅已经开始,前面8讲是;
CNS图表复现01—读入csv文件的表达矩阵构建Seurat对象 CNS图表复现02—Seurat标准流程之聚类分群 CNS图表复现03—单细胞区分免疫细胞和肿瘤细胞 CNS图表复现04—单细胞聚类分群的resolution参数问题 CNS图表复现05—免疫细胞亚群再分类 CNS图表复现06-根据CellMarker网站进行人工校验免疫细胞亚群 CNS图表复现07—原来这篇文章有两个单细胞表达矩阵 CNS图表复现08—肿瘤单细胞数据第一次分群通用规则
如果你也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
正文
文章的第一次分群拿到了epithelial cells [n = 5,581], 我们的CNS图表复现拿到的上皮细胞数量是:
> table(sce@meta.data$immune_annotation)
epi immune stromal
5444 13792 4278
我在单细胞天地的教程:是否是免疫细胞很容易区分那是否是肿瘤细胞呢?提到过,常规做法是使用inferCNV算法可以区分细胞恶性与否。比如online 29 April 2020的文章《Single-Cell Transcriptome Analysis Reveals Intratumoral Heterogeneity in ccRCC, which Results in Different Clinical Outcomes》,就是选取ccRCC的3个病例的21个样本(12个肿瘤,9个对照),质控后总计24550个细胞,使用inferCNV算法可以区分成为7786个非恶性,16764个恶性细胞。但其实我是提出来了一个开放式问题共大家讨论,除了这个inferCNV算法,难道就没有其它方法来比较好的区分细胞的恶性与否吗?希望大家集思广益吧!
现在就给大家演示一下,不使用inferCNV算法仍然是可以判断上皮细胞的恶性与否的方法。
首先取上皮细胞的子集
关键就是 subset 函数的使用:
rm(list=ls())
options(stringsAsFactors = F)
library(Seurat)
library(ggplot2)
load(file = 'first_sce.Rdata')
load(file = 'phe-of-first-anno.Rdata')
sce=sce.first
table(phe$immune_annotation)
sce@meta.data=phe
cells.use <- row.names(sce@meta.data)[which(phe$immune_annotation=='epi')]
length(cells.use)
sce <-subset(sce, cells=cells.use)
sce
然后重新走单细胞流程:
完全参考单细胞转录组数据分析的流程:
# Epithelial cells (n = 5,581) were subsetted and re-clustered into 26 discrete epithelial clusters
sce <- NormalizeData(sce, normalization.method = "LogNormalize",
scale.factor = 1e6)
GetAssay(sce,assay = "RNA")
sce <- FindVariableFeatures(sce,
selection.method = "vst", nfeatures = 2000)
# 步骤 ScaleData 的耗时取决于电脑系统配置(保守估计大于一分钟)
sce <- ScaleData(sce)
sce <- RunPCA(object = sce, pc.genes = VariableFeatures(sce))
DimHeatmap(sce, dims = 1:12, cells = 100, balanced = TRUE)
ElbowPlot(sce)
sce <- FindNeighbors(sce, dims = 1:15)
# Epithelial cells (n = 5,581) were subsetted and re-clustered into 26 discrete epithelial clusters
res.used <- 1
sce <- FindClusters(object = sce, verbose = T, resolution = res.used)
table(sce@meta.data$seurat_clusters)
检查单细胞分群及其来源于的病人信息
很简单的可视化:
set.seed(123)
sce <- RunTSNE(object = sce, dims = 1:15, do.fast = TRUE)
DimPlot(sce,reduction = "tsne",label=T)
DimPlot(sce,reduction = "tsne",label=T, group.by = "patient_id")
table(sce@meta.data$seurat_clusters)
library(gplots)
tab.1=table(sce@meta.data$seurat_clusters,sce@meta.data$patient_id)
balloonplot(tab.1)
可以很明显的看到,第1,2,7,14,21,23,25 是跨越病人的聚类情况,如下所示:
根据细胞亚群是否跨越病人存在来区分上皮细胞的恶性与否
代码如下:
# 1,2,7,14,21,23,25 是跨越病人的聚类情况
# Cancer cells were identified in 44 of the original 49 tumor biopsy samples
# All cancer cells (n = 3,754) were re-clustered, resulting in 25 unique clusters (Figures S2A and S2B).
# The non-cancer epithelial cell clusters (n = 16) were further annotated into cell subtype
cancer=c(1,2,7,13,14,21,23,25)
sce@meta.data$cancer <-ifelse(sce@meta.data$seurat_clusters %in% cancer ,'non-cancer','cancer')
# MAke a table
table(sce@meta.data$cancer)
phe=sce@meta.data
可以看到,我们得到的恶性细胞数量跟作者文章的一样的:
> table(sce@meta.data$cancer)
cancer non-cancer
3732 1712
如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程
生信爆款入门-第9期(线上直播4周,马拉松式陪伴,带你入门)你的生物信息入门课
数据挖掘第7期(线上直播3周,马拉松式陪伴,带你入门) 医学生/医生首选技能提高课
看完记得顺手点个“在看”哦!
长按扫码可关注